package com.example.utils;

import com.example.databean.Post;
import com.example.databean.PostTalk;
import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class PostFileUtils {
    public static  String url = "\\zzuStuPostBar\\WebContent\\WEB-INF\\upload\\";//本地电脑测试文件上传下载的地址
    //static final String url = "";//本地电脑测试文件上传下载的地址
    //static final String url = "";//服务器上传下载的地址路径

    public PostFileUtils() {

    }

    //创建对应的postting文件和postingTalk文件

    public int initPostFile(Post postting) {
        File file1 = new File(postting.getPostUrl());
        File file2 = new File(postting.getPostTalkUrl());
        boolean b1,b2;
        b1=b2=false;
        if(!file1.exists()&&!file2.exists()) {
            try {
                b1 = file1.createNewFile();
                b2 = file2.createNewFile();

            } catch (IOException e) {
                e.printStackTrace();
            }
            if(b1&&b2) {
                System.out.println("创建成功");
                return 0;
            }else {
                return 1;//没有创建成功
            }

        }
        return 2;//没有创建成功，有文件已经存在
    }

    //读取文件
    public static void readFileByLines(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            System.out.println("以行为单位读取文件内容，一次读一整行：");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            int line = 1;
            // 一次读入一行，直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                System.out.println("line " + line + ": " + tempString);
                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    //将存在的字符串写入文件的一行中
    public static void write(String fileUrl,String stat) {

        try {
            //先检查路径的文件是否存在：如果不存在那么创建路径和文件
            File file = new File(fileUrl);
            if (!file.exists()) {
//		            file.mkdirs();
                file.createNewFile();
            }

            BufferedWriter bw   = new BufferedWriter( new FileWriter(fileUrl,true));//加true防止覆盖，默认为false
            String str = stat;
            System.out.println("----------------->"+str);
            System.out.println("---------------->存在吗"+file.exists());

            //在每行输入后加一个系统的换行符
            bw.write(str);
            bw.newLine();//换行
            bw.flush();//刷新
            bw.close();//关闭
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }





    }


    //将一个PostingId组合成一个帖子名
    public static String makePostName(String postingsId) {
        String nameEind = ".txt";
        String postingName = postingsId+nameEind;
        return postingName;
    }


    //将一个PostingId组合成一个帖子评论名
    public static String makePostTalkName(String postingsId) {
        String nameEind = "Talk.txt";
        String postingName = postingsId+nameEind;
        return postingName;
    }

    //读取评论的方法封装
    //将评论列表以json的格式传出
    public static String readTalk(String fileName) {
        System.out.println("_________________________1");
        String json = null;
        List<PostTalk> list = new ArrayList<PostTalk>();
        PostTalk postTalk = new PostTalk();
        File file = new File(fileName);
        BufferedReader reader = null;
        Gson jstoBean = new Gson();
        try {
//	            System.out.println("以行为单位读取文件内容，一次读一整行：");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;

            // 一次读入一行，直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                System.out.println("_________________________2");
                // 显示行号
//	                System.out.println("line " + line + ": " + tempString);
//	                line++;
                System.out.println(tempString);
                postTalk = jstoBean.fromJson(tempString, PostTalk.class);
                list.add(postTalk);
                //将评论对象加入列表

            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        if(!list.isEmpty()) {
            json = jstoBean.toJson(list);


        }

        return json;
    }


    //写评论方法
    public static void addTalk(String fileUrl,PostTalk postTalk) {
        String stat = null;
        Gson json = new Gson();
        stat = json.toJson(postTalk);

        try {
            //先检查路径的文件是否存在：如果不存在那么创建路径和文件
            File file = new File(fileUrl);
            if (!file.exists()) {
//		            file.mkdirs();
                file.createNewFile();
            }

            BufferedWriter bw   = new BufferedWriter( new FileWriter(fileUrl,true));//加true防止覆盖，默认为false
            String str = stat;
            System.out.println("----------------->"+str);
            System.out.println("---------------->存在吗"+file.exists());

            //在每行输入后加一个系统的换行符
            bw.write(str);
            bw.newLine();//换行
            bw.flush();//刷新
            bw.close();//关闭
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }



}
